void main(List<String> args) {
  // 注意二：抽象类不能实例化
  // final s = Shape();

  final map = Map();
  print(map.runtimeType);
}

// 抽象类
// 可以放一些没有实现的函数
// 普通类必须要有实现
// 注意二：抽象类不能实例化

abstract class Shape {
  void getArea();
  String getInfo() {
    return "形状";
  }

  // factory Shape() {
  //   // 实例化子类
  //   return Rectangle();
  // }
}

// 注意一：继承自抽象类后，必须实现抽象类的抽象方法
// 这个代码会报错
// class Rectangle extends Shape {
//   @override
//   int getArea() {
//     return 100;
//   }
// }


// 源码里面使用了 external 关键字
// external关键字作用：将方法的申明和方法的实现分离

// 方法的实现需要注解：patch
// 具体实现 LinkedHashMap